// 版权归陈超所有

#pragma once

#include "CoreMinimal.h"
#include "AbilitySystemInterface.h"
#include "GameFramework/Character.h"
#include "CC_CharacterBase.generated.h"


class UAbilitySystemComponent;
class UAttributeSet;
class USkeletalMeshComponent;

UCLASS(Abstract)
class CC_AURA_API ACC_CharacterBase : public ACharacter,public IAbilitySystemInterface
{
	GENERATED_BODY()

public:
	// 设置此角色属性的默认值
	ACC_CharacterBase();

	//重写接口函数，获取能力系统组件
	virtual UAbilitySystemComponent* GetAbilitySystemComponent() const override;

	//获取属性集
	virtual UAttributeSet* GetAttributeSet() const {return AttributeSet;};

protected:
	// 在游戏开始或生成时调用
	virtual void BeginPlay() override;

	UPROPERTY(EditAnywhere,Category="Combat")
	TObjectPtr<USkeletalMeshComponent> Weapon;

	UPROPERTY()
	TObjectPtr<UAbilitySystemComponent> AbilitySystemComponent;

	UPROPERTY()
	TObjectPtr<UAttributeSet> AttributeSet;

protected:
	//初始化能力演员信息
	virtual void InitCharacterASC();
};
